import os
import cv2
import numpy as np
# get_face_landmarks 自定义工具函数 ，用于提取图像的面部关键点
from utils import get_face_landmarks

# 定义图像存储的位置
data_dir = './data'
output=[]
# 外层循环读取数据目录下是否有子目录
# emotion依次读取每个子目录的名称
for emotion_index,emotion in enumerate(os.listdir(data_dir)):
    # 拼接的data / happy
    emotion_dir = os.path.join(data_dir, emotion)

    # 内层循环:遍历当前情感类别目录下的所有图像文件
    for img_filename in os.listdir(emotion_dir):
        # 拼接图像文件的完整路径 类别+图片名字
        image_path = os.path.join(emotion_dir, img_filename)
        print(f"当前读取的图片路径为：{image_path}")
        # print("当前读取的图片路径为：{}".format(image_path))
        image=cv2.imread(image_path)
        # 调用自定义的函数 提取面部关键点
        # 返回 每个关键的X ,Y,Z 未检测到就返回空列表
        face_landmarks = get_face_landmarks(image)
        # 记住当前的长度 1404 每张检测的人脸图像468个关键点 468 * 3
        print(f'图像{image_path}的关键点的长度：{len(face_landmarks)}')

        if len(face_landmarks) == 1404:
            # 加入情绪索引中
            face_landmarks.append(int(emotion_index))
            output.append(face_landmarks)
np.savetxt('data.txt',np.array(output))
